package com.sbwebsocket.core.ws;

/**
 * @Auther: GSJ
 * @Date: 2022/2/16
 * @Description:
 * @version: 1.0
 */
public abstract class AbstractWsServerSubscribeMessage implements WsServerSubscribeMessage {

    /**
     * websocket订阅消息中间件与自己相关的消息
     * step1: 创建与自身相关的direct主题
     * step2: 创建fanout相关的主题
     * step3: 创建topic主题
     */

    @Override
    public boolean subscribe() {
        direct();
        fanout();
        topic();
        return true;
    }

    /**
     * 特定业务主题消息
     */
    protected abstract void topic();

    /**
     * 全局消息任务
     */
    protected abstract void fanout();

    /**
     * 直连消息（指定用户）
     */
    protected abstract void direct();
}
